Virtual machine technology facilitates increased physical resource utilization as well as agile machine provisioning. Traditionally, software applications are tightly coupled to physical servers on which they run. Virtual machine technology provides a layer of abstraction between the software applications as well as physical hardware and enables provisioning of multiple virtual machines on a single physical server, for example. As a result, workloads can be consolidated to improve physical asset utilization, and machines can be rapidly deployed and decommissioned, as needed.
A virtual machine is a piece of software that emulates a physical computer utilizing a virtual hard disk (VHD), among other things. A VHD is a physical hard disk analogue for a virtual machine. Accordingly, the VHD can include like representations for data and structural elements, such as files and folders. An operating system (OS) (a.k.a. guest operating system) can be installed on the VHD. Further, one or more applications can be installed on the VHD, and the OS can support execution of the one or more applications with respect to the virtual machine.
A VHD can be formatted in one of three distinct manners, namely fixed, dynamic, or differencing. A fixed VHD utilizes a file that is allocated to the size of the virtual hard disk when it was created. A dynamic VHD employs a file that at any given time is large enough to support data written to it plus associated metadata. Accordingly, the VHD file starts small and grows as new blocks are in the disk are used up to the size of the VHD when created. A differencing VHD is a file that represents current state of a virtual disk as a set of modified blocks storing differences in comparison to a parent VHD. A differencing VHD is not an independent disk but rather is linked to another fixed, dynamic, or differencing VHD. Furthermore, a differencing VHD can be utilized in conjunction with a master image.
A master image (a.k.a., golden image) is a virtual machine template that facilitates mass deployment of virtual machines. A virtual machine template is a copy of a VHD that can include an installed operating system, applications, and configurations, among other things. The master image is a useful tool for system administrators, because they do not need to construct a virtual machine from scratch but rather can simply utilize the master image to create a cloned virtual machine. Customizations including additional applications or updates to applications are implemented utilizing a differencing VHD that is linked to a master image VHD. In this manner, the master image remains unchanged while the virtual machine constructed from the master image is modifiable.